package com.fortune.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.fortune.dto.in.mRole.MRoleAddDto;
import com.fortune.dto.in.mRole.MRoleEditDto;
import com.fortune.dto.in.mRole.MRoleListDto;
import com.fortune.dto.in.mRole.PermissionAddDto;
import com.fortune.entity.MPosition;
import com.fortune.vo.mRole.MRoleB;
import com.fortune.vo.mRole.PermissionInMRole;

/**
 * 
 * @author ran
 *
 */
public interface MRoleDao {
	/**
	 * 
	 * @param page
	 * @param pageSize
	 * @param name
	 * @return
	 */
	List<MRoleB> listMRoles(@Param("listDto") MRoleListDto listDto, @Param("mId") String mId);
	/**
	 * 
	 * @param name
	 * @return
	 */
	int countRoles(@Param("listDto") MRoleListDto listDto, @Param("mId") String mId);
	/**
	 * 
	 * @param mRoleAddDto
	 * @param mId
	 * @param roleId
	 * @return
	 */
	int insertRole(@Param("dto")MRoleAddDto mRoleAddDto, @Param("mId") String mId, @Param("roleId") String roleId);
	/**
	 * 
	 * @param name
	 * @param mId
	 * @return
	 */
	MPosition getPositionByMIdAndName(@Param("name") String name, @Param("mId") String mId);
	/**
	 * 
	 * @param permissions
	 * @return
	 */
	int countExsistPermissionCount(@Param("list") List<PermissionAddDto> permissions);
	/**
	 * 
	 * @param mRoleAddDto
	 * @param mId
	 * @param roleId
	 * @return
	 */
	int insertRolePermissions(@Param("permissions") List<PermissionAddDto> permissions, @Param("mId") String mId, @Param("roleId") String roleId);
	/**
	 * 
	 * @param name
	 * @param mId
	 * @param roleId
	 * @return
	 */
	MPosition getPositionByMIdAndNameAndRoleId(@Param("name") String name, @Param("mId") String mId, @Param("roleId") String roleId);
	/**
	 * 
	 * @param mId
	 * @param roleId
	 * @return
	 */
	MPosition getPositionByMIdAndRoleId(@Param("mId") String mId, @Param("roleId") String roleId);
	/**
	 * 
	 * @param editDto
	 * @param mId
	 * @return
	 */
	int updateRole(@Param("dto") MRoleEditDto editDto, @Param("mId") String mId);
	/**
	 * 
	 * @param roleId
	 * @param mId
	 * @return
	 */
	int deletePermissionsByRoleId(@Param("roleId") String roleId, @Param("mId") String mId);
	/**
	 * 
	 * @param mId
	 * @param roleId
	 * @return
	 */
	int deleteRole(@Param("mId") String mId, @Param("roleId") String roleId);
	/**
	 * 
	 * @return
	 */
	List<PermissionInMRole> listPermissions();
	/**
	 * 
	 * @param mId
	 * @param roleId
	 * @return
	 */
	List<String> getPermissionIdsByRole(@Param("mId") String mId, @Param("roleId") String roleId);
}
